/**
 * AI Agent 配置验证工具
 * 用于诊断和修复配置问题，确保正式模式下能正常建立WebSocket连接
 */

/**
 * 验证WebSocket配置
 */
export function validateWebSocketConfig() {
    console.log('🔍 开始验证WebSocket配置...');
    
    const config = {
        wsUrl: import.meta.env.VITE_WS_URL,
        wsChatPath: import.meta.env.VITE_WS_CHAT_PATH,
        mockMode: import.meta.env.VITE_OPEN_MOKE
    };
    
    console.log('📋 当前环境变量配置:', {
        VITE_WS_URL: config.wsUrl,
        VITE_WS_CHAT_PATH: config.wsChatPath,
        VITE_OPEN_MOKE: config.mockMode,
        NODE_ENV: import.meta.env.MODE
    });
    
    const issues = [];
    
    // 检查Mock模式配置
    if (config.mockMode === 'true' || config.mockMode === true) {
        console.log('✅ Mock模式已启用，无需WebSocket配置');
        return { valid: true, mode: 'mock', issues: [] };
    }
    
    // 正式模式配置检查
    console.log('🔍 正式模式配置检查...');
    
    if (!config.wsUrl) {
        issues.push('缺少环境变量 VITE_WS_URL');
    } else if (!config.wsUrl.startsWith('ws://') && !config.wsUrl.startsWith('wss://')) {
        issues.push('VITE_WS_URL 必须以 ws:// 或 wss:// 开头');
    }
    
    if (!config.wsChatPath) {
        issues.push('缺少环境变量 VITE_WS_CHAT_PATH');
    } else if (!config.wsChatPath.startsWith('/')) {
        issues.push('VITE_WS_CHAT_PATH 必须以 / 开头');
    }
    
    const result = {
        valid: issues.length === 0,
        mode: 'production',
        config,
        issues,
        fullUrl: config.wsUrl && config.wsChatPath ? 
                 `${config.wsUrl}${config.wsChatPath}/[historyId]/[agentId]` : 
                 '无法构建完整URL'
    };
    
    if (result.valid) {
        console.log('✅ WebSocket配置验证通过');
        console.log('🔗 完整连接URL模板:', result.fullUrl);
    } else {
        console.error('❌ WebSocket配置验证失败:', issues);
        console.log('💡 解决方案:');
        console.log('   1. 在项目根目录创建 .env 文件');
        console.log('   2. 添加以下配置:');
        console.log('      VITE_WS_URL=wss://your-websocket-server.com');
        console.log('      VITE_WS_CHAT_PATH=/api/v1/chat');
        console.log('   3. 或者设置 VITE_OPEN_MOKE=true 使用Mock模式');
    }
    
    return result;
}

/**
 * 修复配置问题（临时解决方案）
 */
export function fixConfigIssues() {
    console.log('🔧 尝试修复配置问题...');
    
    const validation = validateWebSocketConfig();
    
    if (validation.valid) {
        console.log('✅ 配置已正常，无需修复');
        return validation;
    }
    
    // 提供临时修复方案
    const tempConfig = {
        wsUrl: import.meta.env.VITE_WS_URL || 'wss://api.yummall.cn',
        wsChatPath: import.meta.env.VITE_WS_CHAT_PATH || '/baiyetong/app-dw/ws/chat',
        mockMode: 'true' // 临时强制使用Mock模式
    };
    
    console.log('⚠️ 应用临时配置:', tempConfig);
    console.log('💡 请在项目根目录创建 .env 文件并配置正确的WebSocket地址');
    
    return {
        valid: true,
        mode: 'temp-fix',
        config: tempConfig,
        issues: ['使用临时配置，请手动创建.env文件'],
        fullUrl: `${tempConfig.wsUrl}${tempConfig.wsChatPath}/[historyId]/[agentId]`
    };
}

/**
 * 获取推荐的环境变量配置
 */
export function getRecommendedEnvConfig() {
    const config = `# AI Agent 配置
# 复制此内容到项目根目录的 .env 文件中

# API 基础地址
VITE_API_URL=https://api.yummall.cn/baiyetong/app-dw

# WebSocket 配置（正式模式必须配置）
VITE_WS_URL=wss://api.yummall.cn
VITE_WS_CHAT_PATH=/baiyetong/app-dw/ws/chat

# Mock 模式开关（true=Mock模式，false=正式模式）
VITE_OPEN_MOKE=false

# 请求配置
VITE_LOADING_ENABLED=true
VITE_TOAST_ENABLED=true
VITE_REQUEST_TIMEOUT=60000

# 开发配置
NODE_ENV=development`;
    
    console.log('📋 推荐的环境变量配置:');
    console.log(config);
    
    return config;
}

/**
 * 运行完整的配置诊断
 */
export function runConfigDiagnostics() {
    console.log('🚀 开始运行配置诊断...');
    
    const results = {
        validation: null,
        recommendations: null,
        autoFix: null
    };
    
    try {
        // 1. 验证当前配置
        console.log('\n📋 1. 验证当前配置');
        results.validation = validateWebSocketConfig();
        
        // 2. 获取推荐配置
        console.log('\n📝 2. 获取推荐配置');
        results.recommendations = getRecommendedEnvConfig();
        
        // 3. 如果有问题，尝试自动修复
        if (!results.validation.valid) {
            console.log('\n🔧 3. 尝试自动修复');
            results.autoFix = fixConfigIssues();
        }
        
        console.log('\n📊 诊断结果汇总:', {
            configValid: results.validation.valid,
            mode: results.validation.mode,
            issues: results.validation.issues,
            hasAutoFix: !!results.autoFix
        });
        
        if (!results.validation.valid) {
            console.log('\n💡 修复建议:');
            console.log('1. 在项目根目录创建 .env 文件');
            console.log('2. 将上面的推荐配置复制到 .env 文件中');
            console.log('3. 根据实际服务器地址修改 VITE_WS_URL 和 VITE_WS_CHAT_PATH');
            console.log('4. 重启开发服务器');
        }
        
        return results;
        
    } catch (error) {
        console.error('❌ 配置诊断失败:', error);
        return { ...results, error: error.message };
    }
}

// 在浏览器环境下添加到window对象供调试使用
if (typeof window !== 'undefined') {
    window.configValidator = {
        validate: validateWebSocketConfig,
        fix: fixConfigIssues,
        getConfig: getRecommendedEnvConfig,
        diagnose: runConfigDiagnostics
    };
    
    console.log('🛠️ 配置验证工具已添加到window.configValidator');
    console.log('   - window.configValidator.diagnose() : 运行完整诊断');
    console.log('   - window.configValidator.validate() : 验证当前配置');
    console.log('   - window.configValidator.getConfig() : 获取推荐配置');
} 